require 'yaml'

text = File.read('kafka_promena.txt')

puts text                                      # Vypise text

puts text.upcase                               # Vypis text kapitalkami

puts text.reverse                              # Vypis text pozpatku

puts text.include? "byt"                       # Obsahuje text urcity vyraz?
puts text.include? "metafyzika"
                                                
puts text.length                               # Pocet vsech znaku v textu

puts text.delete(' ').length                   # Pocet znaku bez mezer

puts text.split("\n").length                   # Pocet radek

puts text.split(' ').length                    # Pocet slov

puts text.split(' ').uniq.length               # Pocet jedinecnych slov

puts text.split(' ').uniq.sort                 # Seznam jedinecnych slov usporadany podle abecedy

puts "\n\n==========\n\n"

# ---> A ted neco trochu jineho... Najdeme nejpouzivanejsi slovo :)

words = text.tr('-,();\'"', '').split(' ')
unique_words = words.uniq

current_word = words.sort.first

word_counts = {}
word_counts[current_word] = {}

count = 0

words.sort.each do |word|
  if current_word == word
    count += 1
  else
    count = 1
    current_word = word
  end
  word_counts[word] = {:word => word, :count => count}
end


nejpouzivanejsi = word_counts.sort.first        # "Nejvetsi = prvni"

puts "Začínáme s " + nejpouzivanejsi[1][:word].to_s + "."

word_counts.sort.each do |word|
  nejpouzivanejsi = word if word[1][:count] > nejpouzivanejsi[1][:count] 
end

puts "Nejpoužívanější slovo je „" + nejpouzivanejsi[1][:word] + "“ s " + nejpouzivanejsi[1][:count].to_s + " výskyty."


# ---> ... a co seznam slov podle frekvence pouziti?

puts "Seznam nejpoužívanějších slov v Kafkově ‚Proměně‘:"

most_frequent_words = word_counts.values.collect { |word| [word[:count], word[:word]] }

most_frequent_words.sort.reverse.each_with_index do |word, i|
  puts "#{i+1}. #{word[1]}\t\t\t(#{word[0]} výskytů)"
end